In modern telecommunications networks, information (voice, video, data) is transferred as packet data. The processing of these packets has resulted in the creation of devices referred to as packet processors (also referred to herein as network processors) that are optimized to deal with this form of packet data. Network Processors have specific features or architectures that are provided to enhance and optimize packet processing within these networks. Network processors are programmable and thus allow a single hardware design to undertake a number of different functions, where the appropriate software is installed.
In the generic role as a packet processor, a number of optimized features or functions are typically present in a network processor. These include pattern matching which refers to the ability to find specific patterns of bits or bytes within packets in a packet stream. Another feature is key lookup, for example address lookup—which is the ability to quickly undertake a database lookup using a key (typically an address on a packet) to find a result, typically routing information. Additionally, packet processors perform queue management. As packets are received, processed and scheduled to be sent onwards, they are stored in queues.
In order to deal with high data-rates, several architectural paradigms have been commonly used. These include the pipelining of packet processors wherein each stage of the pipeline consists of an entire processor performing one of the functions described above. Also used is parallel processing with multiple processors, often including multithreading. Network link bandwidth has scaled from 10 Mega bits per second (Mbps), 100 Mbps, 1 Gigabit per second (Gbps), 10 Gbps, and now to the next generation 40 Gbps and 100 Gbps technologies which requires faster processing of packets.